草庐IT

c++ - Visual Studio 和 Boost::Test

全部标签

c++ - test_and_set 线程的这种用法安全吗?

一直在思考如何实现无锁单向链表。老实说,我没有看到很多防弹方法。即使是使用CAS的更强大的方法最终也会有一定程度的ABAproblem.所以我开始思考。部分无锁系统难道不会比总是使用锁更好吗?一些操作可以是原子的和无锁的吗?如果我能做到这一点,它应该仍然是线程安全的。那么,进入正题。我在想一个简单的单向链表。2主要操作。push和pop。push总是在前面插入。像这样:voidpush(intn){T*p=newT;p->n=n;p->next=root;root=p;}pop总是取第一个元素。像这样:T*pop(){T*p=root;root=root->next;returnp;}

c++ - 放大鼠标,考虑相机翻译? (OpenGL)

这是我的问题,我有一个比例点,即未投影的鼠标位置。我还有一个“基本上通过X和Y平移所有对象的相机。我想要做的是实现缩放到鼠标位置。我试过这个:1.Findthemouse'sxandycoordinates2.Translateby(x,y,0)toputtheoriginatthosecoordinates3.Scalebyyourdesiredvector(i,j,k)4.Translateby(-x,-y,0)toputtheoriginbackatthetopleft但这并不影响相机的翻译。我怎样才能正确地做到这一点。谢谢glTranslatef(controls.MainGl

c++ - 这是如何运作的?

在像Adob​​eIllustrator这样的应用程序中,它们有一种简化路径的方法。我不确定这是如何工作的。给定一条路径,每个点都有2个贝塞尔曲线图柄(对于立方贝塞尔曲线),我该如何简化路径?谢谢 最佳答案 看Douglas–Peucker它是一种减少由一系列点近似的曲线中点数的算法。它经常用于GIS解决方案。 关于c++-这是如何运作的?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

c++ - 是否有用于 boost::interprocess 的 'upgrade_to_unique_lock'?

我正在寻找在偏向编写器读取器/编写器模型中的两个(或多个)进程之间有效共享数据block的最佳方法。我当前的测试是使用boost::interprocess。我已经创建了一些managed_shared_memory并试图通过使用存储在共享内存中的进程间互斥来锁定对数据block的访问。但是,即使在读取器上使用sharable_lock并在写入器上使用upgradable_lock时,客户端在写入操作期间将读取碎片值而不是阻塞。在单个进程中的线程之间进行类似的读写器设置时,我使用upgrade_to_unique_lock来解决这个问题。但是,我还没有找到它的boost::interp

c++ - boost::serialization Archive::register_type 如何工作?

boost::serialization能够序列化它们最派生类的多态对象,即使这些对象由指向基类的引用/指针指向。这不需要虚函数。要做到这一点,boost::serialization需要知道存在的多态类型:Archive::register_type必须在Archive用于序列化的对象。Thisexample展示了如何注册类型以及如何序列化它们。我想知道这是如何实现的。我试图查看boost::serialization源代码但失败了:我不太擅长模板元编程。 最佳答案 boost.serialization可以使用typeid()或

c++ - Boost::asio 套接字 - 如何干净地断开它们?

我正在为我的服务器应用程序使用boost异步套接字。我创建了一个调用boost的close()的disconnect()函数,然后删除套接字(操作符删除)。当从其中一个异步调用该函数时没关系。处理程序,但是当我从我的主代码库内部调用它时,整个应用程序在其中一个异步处理程序处崩溃。如何在boost中很好地关闭一个socket? 最佳答案 确保只要可能使用它的处理程序存在,该对象就一直存在。很可能在您调用close之后调用了使用此套接字的处理程序之一(因为它向处理程序报告错误)然后访问死指针...通常,使用boost::shared_p

c++ - Blit 队列优化算法

我正在寻求实现一个管理blit队列的模块。有一个表面,该表面的部分(由矩形包围)被复制到表面内的其他地方:add_blt(rectsrc,pointdst);可以有任意数量的操作按顺序发布到队列中。最终,队列的用户将停止发送blits,并要求一组最佳操作以在表面上实际执行。该模块的任务是确保没有像素被不必要地复制。当然,由于重叠,这变得棘手。blit可以重新blit先前复制的像素。理想情况下,blit操作将在优化阶段进行segmentation,这样每个block都可以通过单个操作到达其最终位置。把它们放在一起很棘手,但并非不可能。我只是不想重新发明轮子。我在网上四处查看,唯一找到的是

c++ - 为什么 bcp 会为 Boost program_options 计算这么大的依赖列表?

我正在使用boost/program_options编写一个小程序来处理来自命令行的选项。现在我想将我的代码分发到通常未安装Boost的系统。所以我使用了bcp实用程序。我在来自program_optionstutorial的名为example/first.cpp的Boost示例中尝试了它:bcp--scan--boost=/users2/xxx/boost_1_45_0~/prova/first.cppdest它创建一个目录dest,其中包含大量.hpp和.cpp文件。我想这就是我所需要的,仅此而已。是对的吗?因为:du-hsdest37Mdest37M是不是太多了?例如,我可以使用

c++ - MATLAB 和 C/C++。如何在不同的 C/C++ 规范之间进行选择

我在从third-partylibrary编译C++文件时遇到以下问题在mex使用VisualC++2010的编译器(cl.exe)。编译器在多行中提示像下面这样的语句:plhs[i]=mxCreateNumericMatrix(nclass,1,mxDOUBLE_CLASS,0);与:errorC2664:'mxCreateNumericMatrix_730':cannotconvertparameter4from'int'to'mxComplexity'原因似乎是mxCreateNumericMatrixtakes作为输入参数4的枚举类型,称为mxComplexity,即defin

c++ - 将 Apache ActiveMQ 与 C/C++ 结合使用

我们正在编写需要集成到ActiveMQ消息总线中的新C/C++代码。有很多选择:CMS是一种易于使用的类似于JMS的C++API。OpenWireC客户端(仅适用于ActiveMQ4.x或更高版本)。OpenWireC++客户端StompC客户端(libstomp)还有“更疯狂”的选项,例如RESTAPI,使用JNI、SOAP、XMPP链接到ActiveMQJava客户端……那么,我应该使用什么来将我的C/C++应用程序与ActiveMQ集成,为什么? 最佳答案 在您列出的四个客户端中,只有ActiveMQ-CPP(CMS)得到积极